#ifndef _I_NODE_H
#define _I_NODE_H
#include <string>
#include <sstream>
#include <map>
class INode{
public:
    /**
     * 平行节点的下一个节点
     */
    virtual INode*  nextNode(const char *name){
        return 0;
    }
    /**
     * 获取节点属性
     */
    virtual std::string getStr(const char *name) {
        return 0;
    }
    template<typename T>
    T get(const char *name)
    {
        std::string value = getStr(name);
        std::stringstream ss;
        ss << value;
        T t;
        ss >> t;
        return t;
    }
    /**
     * 获取子节点
     */
    virtual INode* childNode(const char *name) {
        return 0;
    }
    std::string name;
    std::map<std::string,std::string> attrs;
};
#endif //_I_NODE_H
